12  Animacje dla rzeczywistych danych z BDL

Grzegorz Kończak

12.1 📘 Załadowanie pakietów i pobranie zmiennych z Banku Danych Lokalnych

12.1.1 ❕ Załadowanie pakietów

library(ggplot2)
library(gganimate)
library(plotly)
library(gifski)
library(dplyr)
library(bdl)

12.1.2 ️✔️ Dane są pobierane z Banku Danych Lolalnych

12.1.2.1 🔗 Sklepy i stacje paliw - dane w BDL

12.1.3 Wyświetlenie informacji o zmiennych z BDL

search_variables("sklepy")
# A tibble: 3 × 7
     id subjectId n1              n2     level measureUnitId measureUnitName
  <int> <chr>     <chr>           <chr>  <int>         <int> <chr>          
1   510 P1626     ogółem          sklepy     6            35 ob.            
2   511 P1626     sektor prywatny sklepy     6            35 ob.            
3 58964 P2323     sklepy          <NA>       3            35 ob.            
get_variables("P2323")
# A tibble: 2 × 6
     id subjectId n1           level measureUnitId measureUnitName
  <int> <chr>     <chr>        <int>         <int> <chr>          
1 58964 P2323     sklepy           3            35 ob.            
2 58965 P2323     stacje paliw     3            35 ob.            

12.1.4 Pobranie danych z Banku Danych lokalnych - stacje paliw

get_data_by_variable("58965",year="2021",unitLevel=2)
# A tibble: 16 × 8
   id    name  year    val measureUnitId measureName attrId attributeDescription
   <chr> <chr> <chr> <int> <chr>         <chr>        <int> <chr>               
 1 0112… MAŁO… 2021    549 35            ob.              1 ""                  
 2 0124… ŚLĄS… 2021    810 35            ob.              1 ""                  
 3 0208… LUBU… 2021    283 35            ob.              1 ""                  
 4 0230… WIEL… 2021    878 35            ob.              1 ""                  
 5 0232… ZACH… 2021    429 35            ob.              1 ""                  
 6 0302… DOLN… 2021    490 35            ob.              1 ""                  
 7 0316… OPOL… 2021    185 35            ob.              1 ""                  
 8 0404… KUJA… 2021    514 35            ob.              1 ""                  
 9 0422… POMO… 2021    435 35            ob.              1 ""                  
10 0428… WARM… 2021    254 35            ob.              1 ""                  
11 0510… ŁÓDZ… 2021    695 35            ob.              1 ""                  
12 0526… ŚWIĘ… 2021    265 35            ob.              1 ""                  
13 0606… LUBE… 2021    485 35            ob.              1 ""                  
14 0618… PODK… 2021    448 35            ob.              1 ""                  
15 0620… PODL… 2021    239 35            ob.              1 ""                  
16 0714… MAZO… 2021   1169 35            ob.              1 ""                  

12.2 ✔️ Konstrukcja wykresów dla pobranych zmiennych

12.2.1 Wykres kołowy - liczba stacji paliw

pie_plot(data_type ="variable" ,"58965", "2021", unitLevel = "1")

12.2.2 Wykres rozrzutu - liczba sklepów i stacji paliw

scatter_2var_plot(data_type = "variable" ,c("58964", "58965"), unitLevel = "2",year=2021)+labs(x='sklepy',y='stacje paliw')

12.2.3 Wykres liniowy - liczba sklepów

line_plot(data_type = "variable", unitParentId = "010000000000", varId = "58964",unitLevel=2)

12.2.4 Kartogram - liczba stacji paliw

generate_map(varId = "58965", year = "2021")

12.3 📘 Animacje dla danych z BDL

12.3.1 Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)
p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305/1000000, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "liczba sklepów", y = "liczba stacji paliw")+
  labs(color="Województwo",size="Ludność w mln.")
p

12.3.2 Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

12.3.3 Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

12.3.4 Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

12.3.5 Przygotowanie animacji - stacje paliw

anim_sp <- ggplot(dane, aes(factor(year),val_58965 )) +
  geom_boxplot(color=4,fill = "grey") +
  labs(x = "Rok", y = "Liczba stacji paliw")+
  transition_manual(year, cumulative = TRUE)

12.3.6 Uruchomienie animacji

animate(anim_sp, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

12.3.7 Przygotowanie animacji - sklepy

anim_sklepy <- ggplot(dane, aes(factor(year),val_58964 )) +
  geom_boxplot() +
  labs(x = "Rok", y = "Liczba sklepów")+
  transition_manual(year, cumulative = TRUE)

12.3.8 Uruchomienie animacji

animate(anim_sklepy, height = 5, width = 6,  units = "in", res = 150, end_pause=6,duration=15)

12.3.9 Przygotowanie animacji - sklepy

p<-ggplot(dane, aes(val_58964/val_72305*1000, fill = name)) +
  geom_histogram()
p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}",x="Liczba sklepów na 1 tys. mieszkańców")

12.3.10 Przygotowanie animacji - sklepy i stacje paliw

dane=get_data_by_variable(c("72305","58964","58965"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2003)

12.3.11 Przygotowanie animacji - stacje paliw

p <- ggplot(
  dane, 
  aes(x = val_58964, y=val_58965, size = val_72305, colour = name)
  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Liczba sklepów", y = "Liczba stacji paliw")
p

12.3.12 Uruchomienie animacji

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

12.3.13 Przygotowanie animacji - sklepy i stacje paliw

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

12.4 📘 Liczba urodzeń i zgonów na 1000 mieszkańców

12.4.1 Pobranie danych z Banku Danych Lokalnych

dane=get_data_by_variable(c("72305","63221","63215"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

12.4.2 Przygotowanie animacji - liczba urodzeń i zgonów na 1000 mieszkańców

p <- ggplot(
  dane, 
  aes(x = val_63221/val_72305*1000, y=val_63215/val_72305*1000, size = val_72305/1000000, colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "Urodzenia żywe na 1000 mieszkańców", y = "Zgony  na 1000 mieszkańców")+
  labs(color="Województwo",size="Ludność w mln.")
p

12.4.3 Animacja

anim=p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")
animate(anim, height = 8, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.4.4 Animacja - inna forma uruchomienia

p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

12.4.5 Prezentacja w oknach (facet_wrap) - liczba urodzeń i zgonów na 1000 mieszkańców

p + facet_wrap(~name) +
  transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}")

12.4.6 Animacja - efekt shadow_wake)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_wake(wake_length = 0.1, alpha = FALSE)

12.4.7 Animacja - efekt shadow_mark)

p+ transition_time(year) +
  labs(title = "Rok: {format(frame_time,1,4)}") +
  shadow_mark(alpha = 0.3, size = 0.5)

12.4.8 Przygotowanie animacji - boxplot

anim2 <- ggplot(dane, aes(factor(year), val_63221/val_72305*1000)) +
  geom_boxplot(color=3) +
  transition_manual(year, cumulative = TRUE)+
  labs(x = "Rok", y = "urodzenia żywe na 1000 ludności")

12.4.9 Animacja

anim2
animate(anim2, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.4.10 Przygotowanie animacji - wykres rozrzutu

anim <- ggplot(dane, aes(x=val_63221/val_72305*1000, y=val_63215/val_72305*1000,colour=name)) +
  geom_point() +
  labs(title = "{closest_state}") +
  transition_states(year, transition_length = 4, state_length = 1)+
  labs(x = "Urodzenia żywe na 1000 ludności", y = "Zgony na 1000 ludności")+
  labs(color="Województwo")

12.4.11 Animacja

animate(anim, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.4.12 Przygotowanie animacji - wykres rozrzutu + dodatkowe parametry

anim1 <- anim +
  shadow_wake(wake_length = 0.05)
animate(anim1, height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.4.13 Animacja

anim2 <- anim +
  shadow_wake(0.05, size = 2, alpha = FALSE, colour = 'grey92')
animate(anim2, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.5 Mieszkania

12.5.1 Pobranie danych z BDL

dane=get_data_by_variable(c("633688","633690","633691"),unitLevel=2)
dane$year=as.numeric(dane$year)
dane=dane %>% filter(year >2004)

12.5.2 Przygotowanie animacji

p <- ggplot(
  dane, 
  aes(x = val_633688, y=val_633691,  colour = name)  ) +
  geom_point(show.legend = TRUE, alpha = 0.6) +
  scale_color_viridis_d() +
  scale_size(range = c(2, 10)) +
  labs(x = "do 40m2", y = "pow 80m2")
p

12.5.3 Animacja

r<-p + transition_time(year) + labs(title = "Rok: {format(frame_time,1,4)}")

animate(r, detail = 5,height = 6, width = 8,  units = "in", res = 150, end_pause=6,duration=15)

12.6 📘 Ceny - woda zimna, węgiel kamienny i energia

12.6.1 Pobranie danych z BDL (cena 1 m3 wody zimnej)

dane=get_data_by_variable("5070",unitLevel=2)
theme_set(theme_bw())

12.6.2 Cena wody zimnej - przygotowanie animacji

dane=get_data_by_variable("5070",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1m^3 wody zimnej w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

12.6.3 Animacja

p + transition_reveal(as.numeric(year))

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

12.6.4 Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

12.6.5 Pobranie danych z BDL (cena 1 t węgla kamiennego)

dane=get_data_by_variable("5029",unitLevel=2)

12.6.6 Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1 tony węgla kamiennego w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

12.6.7 Animacja

p + transition_reveal(as.numeric(year))

12.6.8 Animacja

p + 
  geom_point() +
  transition_reveal(as.numeric(year))

12.6.9 Animacja - dodanie parametrów animacji

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

12.6.10 Pobranie danych z BDL (cena 1 kWh energii elektrycznej)

dane=get_data_by_variable("5071",unitLevel=2)

12.6.11 Przygotowanie animacji

p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Cena 1kWh energii elektrycznej zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

12.6.12 Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)

12.7 📘 Dochody na 1 mieszkańca w powiatach

12.7.1 Pobranie danych z BDL

get_variables("P2627")
# A tibble: 18 × 7
       id subjectId n1                 n2    level measureUnitId measureUnitName
    <int> <chr>     <chr>              <chr> <int>         <int> <chr>          
 1  76973 P2627     gminy łącznie z m… ogół…     6             4 zł             
 2  76974 P2627     miasta na prawach… ogół…     6             4 zł             
 3  76975 P2627     gminy bez miast n… ogół…     6             4 zł             
 4  76976 P2627     gminy łącznie z m… doch…     6             4 zł             
 5  76977 P2627     miasta na prawach… doch…     6             4 zł             
 6  76978 P2627     gminy bez miast n… doch…     6             4 zł             
 7  76979 P2627     gminy łącznie z m… udzi…     6             4 zł             
 8  76980 P2627     miasta na prawach… udzi…     6             4 zł             
 9  76981 P2627     gminy bez miast n… udzi…     6             4 zł             
10  76982 P2627     gminy łącznie z m… doch…     6             4 zł             
11  76983 P2627     miasta na prawach… doch…     6             4 zł             
12  76984 P2627     gminy bez miast n… doch…     6             4 zł             
13 149128 P2627     gminy łącznie z m… doch…     6             4 zł             
14 149129 P2627     miasta na prawach… doch…     6             4 zł             
15 149130 P2627     gminy bez miast n… doch…     6             4 zł             
16 149131 P2627     gminy łącznie z m… doch…     6             4 zł             
17 149132 P2627     miasta na prawach… doch…     6             4 zł             
18 149133 P2627     gminy bez miast n… doch…     6             4 zł             
get_data_by_variable("76974",unitLevel=2)
# A tibble: 336 × 8
   id    name  year    val measureUnitId measureName attrId attributeDescription
   <chr> <chr> <chr> <dbl> <chr>         <chr>        <int> <chr>               
 1 0112… MAŁO… 2002  2022  4             zł               1 ""                  
 2 0112… MAŁO… 2003  2098  4             zł               1 ""                  
 3 0112… MAŁO… 2004  2379  4             zł               1 ""                  
 4 0112… MAŁO… 2005  2674  4             zł               1 ""                  
 5 0112… MAŁO… 2006  3055. 4             zł               1 ""                  
 6 0112… MAŁO… 2007  3607. 4             zł               1 ""                  
 7 0112… MAŁO… 2008  3876. 4             zł               1 ""                  
 8 0112… MAŁO… 2009  4122. 4             zł               1 ""                  
 9 0112… MAŁO… 2010  4430. 4             zł               1 ""                  
10 0112… MAŁO… 2011  4412. 4             zł               1 ""                  
# ℹ 326 more rows

12.7.2 Przygotowanie animacji

# 76974 P2627     miasta na prawach powiatu
#         ogółem 

dane=get_data_by_variable("76974",unitLevel=2)
p <- ggplot(
  dane,
  aes(year, val, group = name, color = factor(name))
  ) +
  geom_line() +
  scale_color_viridis_d() +
  labs(x = "Rok", y = "Dochody na 1 mieszkańca miast na prawach powiatu w zł") +
  labs(color="Województwo")+
  theme(legend.position = "right")
p

12.7.3 Animacja

r=p + 
  geom_point(aes(group = seq_along(as.numeric(year)))) +
  transition_reveal(as.numeric(year))

animate(r, detail = 5,height = 6, width = 10,  units = "in", res = 150, end_pause=6,duration=15)